//------------------------------------------------------------
// nebulaGameState.h
//------------------------------------------------------------

/**
 * @file nebulaGameState.h
 */

#pragma once

#include "nebulaState.h"
#include "logic/logicfacade.h"

#include <string>

namespace nebulaGUI {
	class NGUIManager;
}

namespace application {

	class CNebulaGameState : public CNebulaState,
		public logic::ILogicFacade::GameEventsObserver {

	protected:

		nebulaGUI::NGUIManager *GUIManager;
		logic::ILogicFacade *game;

	public:

		CNebulaGameState(CNebulaApplication *nebulaApp);
		virtual ~CNebulaGameState();

		virtual void onCreate();
		virtual void onDestroy();
		virtual void onActivate();
		virtual void onDeactivate();
		virtual void onRun();
		void paintAll();

	protected:

		virtual void runLogic();
		virtual void paint3D();
		virtual void processUserInput();
		virtual void processHUDCommand(std::string command);
	
	}; // class CNebulaGameState

} // namespace application